stylecontext: Pass the changes in the parent to validation function
authorBenjamin Otte <otte@redhat.com>
Wed, 18 Jul 2012 14:55:32 +0000 (16:55 +0200)
committerBenjamin Otte <otte@redhat.com>
Tue, 28 Aug 2012 13:42:23 +0000 (15:42 +0200)
This way, inherited properties can be updated.

gtk/gtkcontainer.c
gtk/gtkstylecontext.c
gtk/gtkstylecontextprivate.h
gtk/gtkwindow.c

index ad8ccb56579eb58fa883e8614a7ae18a67f3a90c..f985173b59d0b67fe1023363d132002e4d20b58e 100644 (file)
@@ -1652,14 +1652,19 @@ gtk_container_idle_sizer (gpointer data)
     {
       GSList *next = slist->next;
       GtkContainer *container = slist->data;
+      GtkBitmask *empty;
+
+      empty = _gtk_bitmask_new ();
 
       container->priv->restyle_pending = FALSE;
       _gtk_style_context_validate (gtk_widget_get_style_context (GTK_WIDGET (container)),
                                    current_time,
-                                   0);
+                                   0,
+                                   empty);
 
       g_slist_free_1 (slist);
       slist = next;
+      _gtk_bitmask_free (empty);
     }
 
   /* we may be invoked with a container_resize_queue of NULL, because
index 7fd5df398e1b9f62ad75ddd69a5a373e4b1796df..a4f3e2c905e316dbf9084139ff10ff5982c080b5 100644 (file)
@@ -3028,9 +3028,10 @@ gtk_style_context_start_animations (GtkStyleContext      *context,
 }
 
 void
-_gtk_style_context_validate (GtkStyleContext *context,
-                             gint64           timestamp,
-                             GtkCssChange     change)
+_gtk_style_context_validate (GtkStyleContext  *context,
+                             gint64            timestamp,
+                             GtkCssChange      change,
+                             const GtkBitmask *parent_changes)
 {
   GtkStyleContextPrivate *priv;
   GtkBitmask *changes;
@@ -3141,7 +3142,7 @@ _gtk_style_context_validate (GtkStyleContext *context,
   change = _gtk_css_change_for_child (change);
   for (list = priv->children; list; list = list->next)
     {
-      _gtk_style_context_validate (list->data, timestamp, change);
+      _gtk_style_context_validate (list->data, timestamp, change, changes);
     }
 
   _gtk_bitmask_free (changes);
index a62b4675f4b1f2a27d15049cae0ae8013f8991cf..96427939230ec8bdadf510bafaf7fb365fbbb702 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "gtkstylecontext.h"
 #include "gtksymboliccolor.h"
+#include "gtkbitmaskprivate.h"
 #include "gtkcssvalueprivate.h"
 
 G_BEGIN_DECLS
@@ -37,7 +38,8 @@ const GValue * _gtk_style_context_peek_style_property        (GtkStyleContext *c
                                                               GParamSpec      *pspec);
 void           _gtk_style_context_validate                   (GtkStyleContext *context,
                                                               gint64           timestamp,
-                                                              GtkCssChange     change);
+                                                              GtkCssChange     change,
+                                                              const GtkBitmask*parent_changes);
 void           _gtk_style_context_queue_invalidate           (GtkStyleContext *context,
                                                               GtkCssChange     change);
 gboolean       _gtk_style_context_check_region_name          (const gchar     *str);
index 0d62acc4033158837a3a5364b97995a0a24a6e51..2cffb13b854889acb0f30c0ee0f0e3dbeb097e49 100644 (file)
@@ -4798,6 +4798,7 @@ gtk_window_show (GtkWidget *widget)
   GtkWindow *window = GTK_WINDOW (widget);
   GtkWindowPrivate *priv = window->priv;
   GtkContainer *container = GTK_CONTAINER (window);
+  GtkBitmask *empty;
   gboolean need_resize;
   gboolean is_plug;
 
@@ -4811,9 +4812,12 @@ gtk_window_show (GtkWidget *widget)
 
   need_resize = _gtk_widget_get_alloc_needed (widget) || !gtk_widget_get_realized (widget);
 
+  empty = _gtk_bitmask_new ();
   _gtk_style_context_validate (gtk_widget_get_style_context (widget),
                                g_get_monotonic_time (),
-                               0);
+                               0,
+                               empty);
+  _gtk_bitmask_free (empty);
 
   if (need_resize)
     {